## 根据图片文件夹中的文件名，在标签文件夹中找到对应的文件并复制到输出文件夹
import os
import shutil

def match_and_copy(image_folder, label_folder, output_folder):
    """
    根据图片文件夹中的文件名，在标签文件夹中找到对应的文件并复制到输出文件夹。

    :param image_folder: 存放图片的文件夹路径
    :param label_folder: 存放标签的文件夹路径
    :param output_folder: 输出匹配标签文件的文件夹路径
    """
    # 确保输出文件夹存在
    os.makedirs(output_folder, exist_ok=True)

    # 获取图片文件名（不带后缀）
    image_names = {os.path.splitext(f)[0] for f in os.listdir(image_folder) if os.path.isfile(os.path.join(image_folder, f))}

    # 遍历标签文件夹，挑选匹配的文件
    for label_file in os.listdir(label_folder):
        label_name, label_ext = os.path.splitext(label_file)
        if label_name in image_names:  # 如果标签文件的名字在图片文件名集合中
            source_path = os.path.join(label_folder, label_file)
            target_path = os.path.join(output_folder, label_file)
            shutil.copy2(source_path, target_path)

if __name__ == "__main__":
    # 设置文件夹路径
    image_folder = "/home/shuai/Documents/mydataset/my_usv_aug/EMBEDDED/JPEGImages"  # 替换为图片文件夹路径
    label_folder = "/home/shuai/Downloads/my_dataset/select_image/paper_image_label/VOCdevkit/Annotations"  # 替换为标签文件夹路径
    output_folder = "/home/shuai/Documents/mydataset/my_usv_aug/EMBEDDED/Annotations"  # 替换为输出文件夹路径

    # 调用函数进行匹配和复制
    match_and_copy(image_folder, label_folder, output_folder)
    print("匹配完成，标签文件已复制到目标文件夹。")
